home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 5 / The 640 Meg Shareware Studio CD-ROM Volume V (Data Express)(1994).ISO / amiga / tempdemo.lha / ProgrammersInfo / DSKEL-BL.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-05-22  |  5.1 KB  |  190 lines

  1. //                            DSKEL-BL v1.1
  2.  
  3. //                          (BLACK LIST DOOR)
  4.  
  5. //**********************
  6. //*****  Includes  *****
  7. //**********************
  8.  
  9. #include <proto/all.h>
  10. #include <stdio.h>
  11.  
  12. #include <string.h>
  13. #include <tempest/headers.h>
  14.  
  15. //********************************
  16. //*****  Structures/Defines  *****
  17. //********************************
  18.  
  19. struct MyMessage
  20.  {
  21.   struct Message Msg;
  22.   struct User User;
  23.   char text[255];
  24.   char text1[255];
  25.   int car,Value,Data;
  26.   long LongValue;
  27.   int  IntValue;
  28.  };
  29.  
  30. struct User User;
  31. struct MsgPort *MyPort = NULL;
  32. struct MyMessage *msg;
  33.  
  34. #define DROP if(EXIT_FLAG) CloseStuff();
  35.  
  36. void CloseStuff();
  37. void pl(char outstring[]);
  38. void showfile(char mstring[]);
  39. void input(char mstring[],int len);
  40. int  DOORIO();
  41.  
  42. int  EXIT_FLAG, DOOR_DATA, DOOR_CAR, DOOR_VALUE, DOOR_VALUE1 = 0,first = 0;
  43. char DOOR_MSG [255],DOOR_MSG1[255],MyName[255],st[100];
  44.  
  45. //******************
  46. //*****  Main  *****
  47. //******************
  48.  
  49. void main(int argc,char *argv[])
  50. {
  51.  char string1[255],string2[255];
  52.  if(!DoorStart(argv[1])) { PutStr("[os2] Tempest Door\n"); exit(0); }
  53.  pl("\f[DSKEL-BL v1.2Black List Door           Programmed By The Skeleton [01-10-93]\r\n");
  54.  pl("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n");
  55.  pl(" _____________________________________________________________________________\r\n");
  56.  pl("|:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|\r\n");
  57.  pl("|::@@@@::::::@@@@.::::::::::::::::::::@@@@::::::::@@@@:::@@@.::::::::::@@@::::|\r\n");
  58.  pl("|:::@@@ ::::::@@@ :::@@@@@:::::::::::::@@@ :@@@::::@@@ :::...:::::::::@@@@@@::|\r\n");
  59.  pl("|:::@@@@@@@:::@@@ :::.. @@@:::@@@@@@:::@@@ @@@  :::@@@ ::@@@@::@@@@@@ :@@@ :::|\r\n");
  60.  pl("|:::@@@  @@@ :@@@ ::@@@@@@@ :@@@ ..@@ :@@@@@@ :::::@@@ ::@@@  @@@.....:@@@   :|\r\n");
  61.  pl("|:::@@@ :@@@ :@@@ :@@@ .@@@ :@@@ ::::::@@@ @@@ ::::@@@ ::@@@ : @@@@@ ::@@@ :::|\r\n");
  62.  pl("|:::@@@ :@@@ :@@@ :@@@ :@@@ :@@@ ::@@ :@@@ :@@@ :::@@@ ::@@@ ::...@@@ :@@@ :::|\r\n");
  63.  pl("|::@@@@@@@@  @@@@@ :@@@@@@@@ :@@@@@@  @@@@@ :@@@ :@@@@@ @@@@@ @@@@@@  ::@@@ ::|\r\n");
  64.  pl("|:::       .::     ::         :      :::     :    :     :    ::      ::::    :|\r\n");
  65.  pl("|:::......::::.....:::........::....::::.....:....:.....:....:::....::::::...:|\r\n");
  66.  pl("|::::::::::::::::: World BBS List -(List Made/Updated by VOB) ::::::::::::::::|\r\n");
  67.  pl("|:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|\r\n");
  68.  
  69.  NEXT:
  70.  
  71.  showfile("DOORS:BlackList/Menu.txt");
  72.  pl("\r\n[Q = QuitSelect: ");
  73.  input(string1,1);
  74.  DROP;
  75.  if(string1[0] == 'q' || string1[0] == 'Q')
  76.     CloseStuff();
  77.  pl("\f");
  78.  strcpy(string2,"DOORS:BlackList/");
  79.  strcat(string2,string1);
  80.  showfile(string2);
  81.  goto NEXT;
  82. }
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95. //*************************
  96. //*****  Close Stuff  *****
  97. //*************************
  98.  
  99. void CloseStuff()
  100. { DOOR_DATA=99; strcpy(DOOR_MSG,'\0'); DOORIO();
  101.  while(msg=(struct MyMessage *)GetMsg(MyPort)) ReplyMsg((struct Message *)msg);
  102.  if(MyPort) DeletePort(MyPort);
  103.  exit(0); }
  104.  
  105. //********************
  106. //*****  DoorIO  *****
  107. //********************
  108.  
  109. int DOORIO()
  110. {
  111.  struct MsgPort *HisPort;
  112.  struct MyMessage message;
  113.  int UPDATE;
  114.  if(EXIT_FLAG) return 0;
  115.  UPDATE=0;
  116.  HisPort = FindPort(st);
  117.  if(HisPort!=NULL)
  118.   {
  119.    message.Msg.mn_Node.ln_Type = NT_MESSAGE;
  120.    message.Msg.mn_Length = sizeof(message);
  121.    message.Msg.mn_ReplyPort = MyPort;
  122.    if(first)CopyMem(&User,&message.User,sizeof(struct User));
  123.    message.car   = 0;
  124.    message.Data  = DOOR_DATA;
  125.    message.Value = DOOR_VALUE;
  126.    message.IntValue = DOOR_VALUE1;
  127.    strcpy(message.text,DOOR_MSG);
  128.    strcpy(message.text1,DOOR_MSG1);
  129.    PutMsg((struct MsgPort *)HisPort,(struct Message *)&message);  /* send the message  */
  130.    Wait(1 << MyPort->mp_SigBit);
  131.    GetMsg(MyPort);
  132.    DOOR_DATA  = message.Data;
  133.    DOOR_VALUE = message.Value;
  134.    DOOR_VALUE1 = message.IntValue;
  135.    strcpy(DOOR_MSG,message.text);
  136.    strcpy(DOOR_MSG1,message.text1);
  137.    CopyMem(&message.User,&User,sizeof(struct User));
  138.    first=1;
  139.    UPDATE=0;
  140.    if(message.car) EXIT_FLAG=1;
  141.   }
  142.  return 0;
  143. }
  144.  
  145. //************************
  146. //*****  Door Start  *****
  147. //************************
  148.  
  149. DoorStart(char node[])
  150. {
  151.  struct MsgPort *HisPort;
  152.  EXIT_FLAG = 0;
  153.  strcpy(st,node);
  154.  strcat(st,":TEMPEST_DOOR");
  155.  HisPort = FindPort(st);
  156.  if(HisPort==NULL) return (FALSE);
  157.  strcpy(MyName,node);
  158.  strcat(MyName,":DOOR_PORT");
  159.  MyPort = CreatePort(MyName,0L);
  160.  if(MyPort==NULL)
  161.   {
  162.    PutStr("Cant open port");
  163.    return(int)FALSE;
  164.   }
  165.  DOORIO();
  166.  return (int)TRUE;
  167. }
  168.  
  169. //*******************
  170. //*****  Input  *****
  171. //*******************
  172.  
  173. void input(char mstring[],int len)
  174. { DOOR_DATA=40; DOOR_VALUE=len; strcpy(DOOR_MSG,mstring); DOORIO();
  175.  strcpy(mstring,DOOR_MSG); strcpy(DOOR_MSG,'\0'); strcpy(DOOR_MSG1,'\0'); }
  176.  
  177. //*****************************
  178. //*****  PL (Print Line)  *****
  179. //*****************************
  180.  
  181. void pl(char outstring[])
  182. { DOOR_DATA=1; strcpy(DOOR_MSG,outstring); DOORIO(); }
  183.  
  184. //***********************
  185. //*****  Show File  *****
  186. //***********************
  187.  
  188. void showfile(char mstring[])
  189. { DOOR_DATA=30; strcpy(DOOR_MSG,mstring); DOORIO(); }
  190.